@JsonFormat একটি Jackson Annotation, যা JSON Serialization এবং Deserialization-এর সময় তারিখ এবং সময় ফরম্যাট কাস্টমাইজ করতে ব্যবহৃত হয়। এটি আপনার প্রয়োজন অনুযায়ী JSON ফরম্যাটে Date/Time-কে নিয়ন্ত্রণ করতে সাহায্য করে, যেমন কাস্টম প্যাটার্ন, টাইমজোন, লোকেল ইত্যাদি।
@JsonFormat এর বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা |
|---|---|
pattern | তারিখ এবং সময়ের ফরম্যাট কাস্টমাইজ করার জন্য ব্যবহার হয় (যেমন: yyyy-MM-dd, HH:mm:ss ইত্যাদি)। |
shape | JSON ফিল্ডের আউটপুট শেপ নির্ধারণ করে (যেমন: STRING, NUMBER, ARRAY)। |
timezone | টাইমজোন সেট করার জন্য (যেমন: UTC, Asia/Kolkata)। |
locale | নির্দিষ্ট লোকেল (যেমন: en_US, fr_FR) সেট করতে। |
@JsonFormat ব্যবহার করার উদাহরণ
১. তারিখ এবং সময় ফরম্যাটিং
@JsonFormat Annotation ব্যবহার করে আপনি JSON এ Date এবং Time ফরম্যাট কাস্টমাইজ করতে পারেন।
Java Class Example:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class Event {
private String name;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Kolkata")
private Date eventDate;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getEventDate() {
return eventDate;
}
public void setEventDate(Date eventDate) {
this.eventDate = eventDate;
}
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class JsonFormatExample {
public static void main(String[] args) throws Exception {
Event event = new Event();
event.setName("Workshop");
event.setEventDate(new Date());
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(event);
System.out.println(json);
}
}
JSON Output:
{
"name": "Workshop",
"eventDate": "2024-12-21 14:30:00"
}
@JsonFormat দিয়ে তারিখ এবং সময় ফরম্যাট কাস্টমাইজ করা
২. তারিখ এবং সময় ফরম্যাট কাস্টম প্যাটার্ন দিয়ে
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class Event {
private String name;
@JsonFormat(pattern = "dd/MM/yyyy")
private Date eventDate;
// Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class JsonFormatExample {
public static void main(String[] args) throws Exception {
Event event = new Event();
event.setName("Conference");
event.setEventDate(new Date());
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(event);
System.out.println(json);
}
}
JSON Output:
{
"name": "Conference",
"eventDate": "21/12/2024"
}
@JsonFormat দিয়ে TimeZone নির্ধারণ
@JsonFormat এর timezone অ্যাট্রিবিউট ব্যবহার করে আপনি নির্দিষ্ট টাইমজোন সেট করতে পারেন।
Java Class Example:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class Event {
private String name;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
private Date eventDate;
// Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class JsonFormatExample {
public static void main(String[] args) throws Exception {
Event event = new Event();
event.setName("Global Conference");
event.setEventDate(new Date());
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(event);
System.out.println(json);
}
}
JSON Output:
{
"name": "Global Conference",
"eventDate": "2024-12-21 09:30:00"
}
@JsonFormat দিয়ে Locale নির্ধারণ
locale অ্যাট্রিবিউট ব্যবহার করে আপনি JSON এর তারিখ এবং সময় ফরম্যাটিং লোকেল ভিত্তিক কাস্টমাইজ করতে পারেন।
Java Class Example:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class Event {
private String name;
@JsonFormat(pattern = "yyyy-MM-dd", locale = "en_US")
private Date eventDate;
// Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class JsonFormatExample {
public static void main(String[] args) throws Exception {
Event event = new Event();
event.setName("Holiday");
event.setEventDate(new Date());
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(event);
System.out.println(json);
}
}
JSON Output:
{
"name": "Holiday",
"eventDate": "2024-12-21"
}
Spring Boot Configuration
Spring Boot অ্যাপ্লিকেশনে আপনি @JsonFormat ব্যবহার করতে পারেন, অথবা application.properties ফাইলে ডেটা ফরম্যাট সেট করতে পারেন:
application.properties Example:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=Asia/Kolkata
Java 8 Date/Time API এবং @JsonFormat
Jackson Java 8 Date/Time API (যেমন LocalDate, LocalDateTime) কে সাপোর্ট করে। JavaTimeModule নিবন্ধন করার মাধ্যমে আপনি LocalDate, LocalDateTime-এ @JsonFormat অ্যাপ্লাই করতে পারেন।
JavaTimeModule Dependency (Maven):
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.15.2</version>
</dependency>
Java Class Example:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
public class Event {
private String name;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime eventDateTime;
// Getters and Setters
}
Serialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import java.time.LocalDateTime;
public class JsonFormatExample {
public static void main(String[] args) throws Exception {
Event event = new Event();
event.setName("Meeting");
event.setEventDateTime(LocalDateTime.now());
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule()); // Register JavaTimeModule
String json = mapper.writeValueAsString(event);
System.out.println(json);
}
}
JSON Output:
{
"name": "Meeting",
"eventDateTime": "2024-12-21 14:30:00"
}
@JsonFormatএকটি শক্তিশালী Annotation যা Jackson এর মাধ্যমে Date এবং Time ফরম্যাট কাস্টমাইজ করতে সাহায্য করে।@JsonFormatদিয়ে তারিখ এবং সময়ের কাস্টম প্যাটার্ন, টাইমজোন, এবং লোকেল নির্ধারণ করা যায়।- Java 8 Date/Time API এবং Spring Boot এর কনফিগারেশন সহ
@JsonFormatখুবই কার্যকরী। - এটি Date, Time, LocalDateTime এবং Number formatting ক্ষেত্রে অনেক সুবিধা প্রদান করে।
Read more